﻿/*
 * Created by SharpDevelop.
 * User: Usuario
 * Date: 31/10/2011
 * Time: 07:11 p.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Data;
using System.Data.SqlClient;

namespace DAOFactory
{
	/// <summary>
	/// Description of DAOLineaPedidoAbastecimiento.
	/// </summary>
	public class DAOLineaPedidoAbastecimiento
	{
		//private int cont;//OLO POR AHORA, ES EL CODIGO DE LA LINEA, 
		//CAMBIAR!!!!!
		public DAOLineaPedidoAbastecimiento()
		{
		}
		
		public int cambiaCantRecibida(int ped, int linea, int cant){
			String cmdSQL;
			
            SqlConnection conn = ConnectionManager.getConnection();
			cmdSQL = "UPDATE PEDIDOABASTECIMIENTOLINEA SET CANTRECIBIDA=" + cant + " WHERE IDPEDIDOABASTECIMIENTO=" + ped + " AND IDPEDIDOABASTECIMIENTOLINEA=" + linea + ";";
			SqlCommand command = new SqlCommand(cmdSQL, conn);
			try{
				command.ExecuteNonQuery();
			}
			catch{
				//Si devuelde null es poruqe hubo un error al cargar la lista de pedidos
				return 0;
			}
			return 1;
		}
		
		public int cambiaEstadoLinea(int ped, int linea, int est){
			String cmdSQL;
			
            SqlConnection conn = ConnectionManager.getConnection();
			cmdSQL = "UPDATE PEDIDOABASTECIMIENTOLINEA SET IDESTADOPEDIDO=" + est + " WHERE IDPEDIDOABASTECIMIENTO=" + ped + " AND IDPEDIDOABASTECIMIENTOLINEA=" + linea + ";";
			SqlCommand command = new SqlCommand(cmdSQL, conn);
			try{
				command.ExecuteNonQuery();
			}
			catch{
				//Si devuelde null es poruqe hubo un error al cargar la lista de pedidos
				return 0;
			}
			return 1;
		}
		
		public int eliminaLineaPedido(int cod, int codPed){
			String cmdSQL;
			
            SqlConnection conn = ConnectionManager.getConnection();
			//elimina las lineas asociadas con el pedido de abastecimiento que se desea borrar
			cmdSQL = "DELETE FROM PEDIDOABASTECIMIENTOLINEA WHERE IDPEDIDOABASTECIMIENTO=" + codPed + "" +
				" AND IDPEDIDOABASTECIMIENTOLINEA=" + cod + ";";
			SqlCommand command = new SqlCommand(cmdSQL, conn);
			try{
	          	command.ExecuteNonQuery();
	           	return 1;
			}
			catch{
				return 0;
			}
		}
		
		public int eliminaPedido(int cod){
			String cmdSQL;
			
            SqlConnection conn = ConnectionManager.getConnection();
			//elimina las lineas asociadas con el pedido de abastecimiento que se desea borrar
			cmdSQL = "DELETE FROM PEDIDOABASTECIMIENTOLINEA WHERE IDPEDIDOABASTECIMIENTO=" + cod + ";";
			SqlCommand command =  new SqlCommand(cmdSQL, conn);
			try{
	          	command.ExecuteNonQuery();
	           	return 1;
			}
			catch{
				return 0;
			}
		}
		
		public int nuevaLineaPedido(int codPed, int codProd, int codProv, int cant){
			String cmdSQL;
			SqlDataReader res = null;
			
            SqlConnection conn = ConnectionManager.getConnection();
			int codLin = 0;
			cmdSQL = "SELECT MAX(IDPEDIDOABASTECIMIENTOLINEA) FROM PEDIDOABASTECIMIENTOLINEA WHERE IDPEDIDOABASTECIMIENTO=" + codPed + ";";
			
			SqlCommand command = new SqlCommand(cmdSQL, conn);
			try{
				res = command.ExecuteReader();
				while(res.Read()){
					try{
						codLin = Int32.Parse(res[0].ToString());
						codLin++;
					}
					catch{
						codLin = 1;
					}
				}
				res.Close();
				cmdSQL = "INSERT INTO PEDIDOABASTECIMIENTOLINEA (IDPEDIDOABASTECIMIENTOLINEA, IDPEDIDOABASTECIMIENTO, IDPRODUCTO, IDPROVEEDOR, CANTIDAD, CANTRECIBIDA, CANTENVIADA, IDESTADOPEDIDO) VALUES" +
				"(" + codLin + ", " + codPed + ", " + codProd + ", " + codProv + ", " + cant +",0,0,3);";
				command =  new SqlCommand(cmdSQL, ConnectionManager.getConnection());
				command.ExecuteNonQuery();
			}
			catch{
				res.Close();
				//Si devuelde null es poruqe hubo un error al cargar la lista de pedidos
				return 0;
			}
			return 1;
		}
		
		public int updateLineaPedido(int ped, int pedLin, int codProv, int cant, int cantRec, int cantEnv, int est){
			String cmdSQL;
			
            SqlConnection conn = ConnectionManager.getConnection();
			cmdSQL = "UPDATE PEDIDOABASTECIMIENTOLINEA SET IDPROVEEDOR=" + codProv + ", CANTIDAD=" + cant + 
				", CANTRECIBIDA=" + cantRec + ",IDESTADOPEDIDO=" + est + ", CANTENVIADA=" + cantEnv +" WHERE IDPEDIDOABASTECIMIENTO=" + ped + " AND IDPEDIDOABASTECIMIENTOLINEA=" + pedLin + ";";
			
			SqlCommand command =  new SqlCommand(cmdSQL, conn);
			try{
				command.ExecuteNonQuery();
			}
			catch{
				//Si devuelde null es poruqe hubo un error al cargar la lista de pedidos
				return 0;
			}
			return 1;
		}
	}
}
